#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

// 需求：利用系统调用实现love.txt的一个备份，并在控制台输出文件内容
int main(int argc, char const *argv[])
{
    // 打开读文件流  love.txt
    int fd = open("love.txt", O_RDONLY);  // FILE *
    if (fd == -1) {
        printf("打开读文件失败 \n");
        return -1;
    }

    // 打开写文件流  love2.txt
    int fd2 = open("love2.txt", O_CREAT|O_WRONLY|O_APPEND, 0644);
    if (fd2 == -1) {
        printf("打开写文件失败 \n");
        close(fd);
        return -1;
    }

    // 不断的边读边写边输出到控制台
    char data_buf[128];
    ssize_t read_len;
    while((read_len=read(fd, data_buf, sizeof(data_buf))) > 0) {
        write(fd2, data_buf, read_len);
        // STDOUT_FILENO: 默认指向控制台的输出流文件描述符
        write(STDOUT_FILENO, data_buf, read_len);
    }

    // 关闭文件流
    close(fd);
    close(fd2);

    return 0;
}
